package com.xcity.game.combat.attr;

/**
 * 属性计算修正器
 * @author yang.li
 *
 */
public interface CombatAttributeFilter {

	/**
	 * 修正属性值
	 * @param value 属性输入值
	 * @param factor 修正因子
	 * @return
	 */
	float doFilter(float value, float factor);
	
	enum Filters implements CombatAttributeFilter {
		/** 加法修正 */
		ADD {
			@Override
			public float doFilter(float value, float factor) {
				return factor;
			}
		},
		
		/** 加百分比修正 */
		ADD_PERCENT {
			@Override
			public float doFilter(float value, float factor) {
				return value * factor / 100f;
			}
		},
		
		/** 乘法修正 */
		MULTIPLY {
			@Override
			public float doFilter(float value, float factor) {
				return value * factor;
			}
		},
		
		/** 加一千倍 */
		ADD_THOUSANDFOLD {
			@Override
			public float doFilter(float value, float factor) {
				return factor * 1000;
			}
		}
		
		;
	}
	
}
